"""
每日充电：
第二周第二节课操作记录
"""
import chardet

content = """
不习惯用控制台调试的我
"""
# 操作一：
# unicode_escape 一种编码格式，计算机显示的实际上是码位
temp = "你好".encode(encoding="unicode_escape")
print(temp)
# temp = b'\\u4f60\\u597d'
result = temp.decode(encoding="unicode_escape")
print(result)

# 操作二：
# 编码,字符序列转换成字节序列也就是二进制序列,以后基本用的都是utf-8

temp = "你好".encode(encoding="utf-8")
print(temp)
# temp = b'\xe4\xbd\xa0\xe5\xa5\xbd'
result = temp.decode(encoding="utf-8")
print(result)

# 操作三：
# 混合编码chardet解码示例
temp = '你好'.encode(encoding="utf-8") + "世界".encode(encoding="gbk")
print(temp)

# temp = temp.decode("utf-8")
# print(temp)
# UnicodeDecodeError: 'utf-8' codec can't decode byte 0xca in position 6: invalid continuation byte
# 使用chardet库

# result = chardet.detect(temp)
# print(result)
# {'encoding': 'IBM866', 'confidence': 0.25598990785387277, 'language': 'Russian'} 根据统计学猜测，也有可能失误滴

# 强制转换,可选参数"ignore",建议鬼符替换"replace"
result = temp.decode(encoding="utf-8", errors='replace')
print(result)

# ===========================字符串的crud操作===========================================
# c创建
a = "a"
print(id(a))
# 31664480

a = a + "b"
print(id(a))
# 52934048 结论，字符串增加会改变内存指向

# r 查找:索引，find 方法 ， index方法

a = "abcdedfg"
print(a[0])
# a 索引是从0开始的
print(a.find('g'))
# 7 注意要加引号才是字符

print(a.index('d'))

# 3 index 跟find方法都是从0开始索引的,
# find找不到返回-1，index找不到返回错误ValueError: substring not found

# startwith跟endwith方法，返回布尔值
f = "Hello World!"
print(f.startswith('H'))
# True
print(f.endswith("d"))
# False

# u 更新 也就是改

# repalce方法
a = "你好啊，世界！"
result = a.replace("你好", "他好")
print(result)

# 他好啊，世界！

# 分割
result = a.split("，")
print(result)

# 中文拿来做分割符也是可以的['你好啊', '世界！']

# 拼接
result = "，".join(result)
print(result)

# 你好啊，世界！

# d 删除——strip，不会删除中间的
# 默认删除前后空格
temp = "     ab   cdefg    "
result = temp.strip()
print(result)
# 删前空
result =temp .lstrip()
print(result)

#删后空

result =temp .rstrip()
print(result)

# ===============字符串的输出输入操作=====================

# open函数打开一个文件, 没有文件会新建, 但是路劲不对会报错
# 指定文件名, 方法(读, 写, 追加), 编码格式
output = open("output.txt", "w", encoding="utf-8")
content = "hello, world"
# 正式写入文件
output.write(content)
# 关闭文件句柄
output.close()

input = open("output.txt", "r", encoding="utf-8")
# 获取文件中的内容
content = input.read()
print(content)

# 暂时理解为只能读取一遍
content_2 = input.read()
print(content_2)

output = open("output.txt", "a", encoding="utf-8")
content = "\nhello, world"
# 正式写入文件
output.write(content)
# 关闭文件句柄
output.close()


# 字符串的格式化输出
a = "每日"
b = "充电"

# 留好中括号
# 默认按顺序
result ="{}{}".format(a,b)
print(result)

# 颠倒位置
result ="{1}{0}".format(a,b)
print(result)

# 按照关键字参数
result ="{b}{a}".format(a="每日",b="充电")
print(result)

# 非常方便的方法，f"" 3.6版本开始
print(f"{a}, {b}")

# %s 早期的

# 小数的格式化

a = 3.1415926
result = "{:.2f}".format(a)
print(result)

# output = open("output.txt", "a", encoding="utf-8")
# # 正式写入文件
# output.write(content)
# # 关闭文件句柄
# output.close()